﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections;

namespace Universitario.DAO
{
    public class VagaDAO
    {
        private static DataClasses1DataContext dc = new DataClasses1DataContext();
        public static ArrayList erros
        {
            get;
            set;
        }

        public static List<int> getAllCargas()
        {
            var query = from vagas in dc.Vagas
                        select vagas.caga_horaria;

            return query.Distinct().ToList();
        }
        public static List<Vaga> GetAll()
        {
            var query = from vagas in dc.Vagas
                        select vagas;
            return query.ToList();
        }

        public static Vaga SelectById(long id)
        {
            var query = from vaga in dc.Vagas
                        where vaga.id == id
                        select vaga;

            return query.FirstOrDefault();
        }
        public static void InsertEstagio(Vaga_Estagio estagio)
        {

            try
            {
                dc.Vaga_Estagios.InsertOnSubmit(estagio);
                dc.SubmitChanges();
            }
            catch (ArgumentNullException)
            {
                throw new System.ArgumentNullException();
            }
            
        }
        public static void InsertTrainee(Vaga_Trainee trainee)
        {

            try
            {
                dc.Vaga_Trainees.InsertOnSubmit(trainee);
                dc.SubmitChanges();
            }
            catch (ArgumentNullException)
            {
                throw new System.ArgumentNullException();
            }
            
        }
        public static void InsertEmprego(Vaga_Emprego emprego)
        {

            try
            {
                dc.Vaga_Empregos.InsertOnSubmit(emprego);
                dc.SubmitChanges();
            }
            catch (ArgumentNullException)
            {
                throw new System.ArgumentNullException();
            }
            
        }
        public static List<Vaga> selVagaEstagiobyCurso(Curso_Graduacao curso)
        {
            var query = from vaga in dc.Vaga_Cursos
                        where vaga.Vaga.Vaga_Estagio!=null && vaga.curso_id==curso.id
                        select vaga.Vaga;
            return query.ToList();
        }
        public static List<Vaga> selVagaTraineebyCurso(Curso_Graduacao curso)
        {
            var query = from vaga in dc.Vaga_Cursos
                        where vaga.Vaga.Vaga_Trainee != null && vaga.curso_id == curso.id
                        select vaga.Vaga;
            return query.ToList();
        }
        public static List<Vaga> selVagaEmpregobyCurso(Curso_Graduacao curso)
        {
            var query = from vaga in dc.Vaga_Cursos
                        where vaga.Vaga.Vaga_Emprego != null && vaga.curso_id == curso.id
                        select vaga.Vaga;
            return query.ToList();
        }

        public static void Insert(Vaga vaga)
        {
            try
            {

                erros = new ArrayList();

                if (vaga.data_fim <= DateTime.Now)
                {
                    erros.Add(new KeyValuePair<String, String>("TxtDataFinal", "Data de Fim Precisa ser depois da Data Atual"));
                }

                if (vaga.descricao.Length < 5)
                {
                    erros.Add(new KeyValuePair<String, String>("TxtDescricao", "Descrição precisa ser preenchida"));
                }

                if (erros.Count != 0)
                {
                    throw new ArgumentException();
                }

                dc.Vagas.InsertOnSubmit(vaga);
                dc.SubmitChanges();
            }
            catch (NullReferenceException)
            {
                throw new System.NullReferenceException();    
            }
        }
    }
}

